package com.indra.bbva.pe.monitor.in.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.indra.bbva.pe.monitor.in.dao.iface.AlarmaDAOIface;
import com.pe.bbva.utils.Constantes;
import com.stefanini.pe.bbva.bp.monitor.in.to.AlarmaBono;
import com.stefanini.pe.bbva.bp.monitor.in.to.AlarmaCumple;
import com.stefanini.pe.bbva.bp.monitor.in.to.AlarmaDPZ;
import com.stefanini.pe.bbva.bp.monitor.in.to.AlarmaDesviacionPerfil;
import com.stefanini.pe.bbva.bp.monitor.in.to.AlarmaGeneral;
import com.stefanini.pe.bbva.bp.monitor.in.to.AlarmaORep;
import com.stefanini.pe.bbva.bp.in.to.UsuarioAsesor;

@Repository
public class AlarmaDAOImpl extends SqlMapClientDaoSupport implements AlarmaDAOIface {
	
	Logger logger = Logger.getLogger(this.getClass());
		
	@Autowired
	public AlarmaDAOImpl(SqlMapClient sqlMapClient) {
		super.setSqlMapClient(sqlMapClient);
	}
		
	@SuppressWarnings("unchecked")
	public boolean actualizarFechaSiguienteAlarma(String idtablaalarma) {
		try {
			HashMap map = new HashMap();
			map.put("in_idtablaalarma", idtablaalarma);
			getSqlMapClientTemplate().update("BP_ALARMAS.sp_actualizarFechaSiguiente",map);
			return true;			
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
	
	@SuppressWarnings("unchecked")
	public boolean validarEjecucionalarma(String idtablaalarma) {
		Map<String,Object> param=new HashMap<String, Object>();	
		param.put("in_idtablaalarma", idtablaalarma);
		getSqlMapClientTemplate().queryForObject("BP_ALARMAS.sp_validarEjecucionalarma",param);
		return (((String)param.get("OUT_RETORNO")).equals(Constantes.FLAG_TRUE))?true:false;		
	}
		
	@SuppressWarnings("unchecked")
	public List<AlarmaGeneral> listarAlarmaDetalle(String idtablaalarma) {		
		HashMap map = new HashMap();
		map.put("in_idtablaalarma", idtablaalarma);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_listarAlarma",map);
		return (List<AlarmaGeneral>)map.get("out_result_set");		
	}
	
	@SuppressWarnings("unchecked")
	public String insertarAlarmaLog(String idtablaalarma) {		
		HashMap map = new HashMap();
		map.put("in_idtablaalarma", idtablaalarma);
		getSqlMapClientTemplate().queryForObject("BP_ALARMAS.sp_insertarAlarmaLog",map);
		return (String)map.get("out_idlogalarma");		
	}
	
	@SuppressWarnings("unchecked")
	public boolean actualizarAlarmaLog(String idtablaalarma,
									   String idlogalarma,
									   String inderror,
									   String mensaje) {		
		try {
			HashMap map = new HashMap();
			map.put("in_idtablaalarma", idtablaalarma);
			map.put("in_idlogalarma", idlogalarma);
			map.put("in_inderror", inderror);
			map.put("in_mensaje", mensaje);
			getSqlMapClientTemplate().update("BP_ALARMAS.sp_actualizarAlarmaLog",map);
			return true;			
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}		
	}
			
	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> sp_cc_asesores(String idusuarioasesor, String idtablaalarma) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		map.put("in_idtablaalarma", idtablaalarma);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_cc_asesores",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}
	
	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listar_asesores_dpz_diaria() {		
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_listar_asesores_dpz_diaria",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}
	
	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listar_asesores_dpz_mensual() {		
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_listar_asesores_dpz_mensual",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}	

	@SuppressWarnings("unchecked")
	public List<AlarmaDPZ> consultaAlarmaDPZMensual(String idusuarioasesor) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaDPZMensual",map);
		return (List<AlarmaDPZ>)map.get("out_result_set");
	}
	
	@SuppressWarnings("unchecked")
	public List<AlarmaDPZ> consultaAlarmaDPZDiaria(String idusuarioasesor) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaDPZDiaria",map);
		return (List<AlarmaDPZ>)map.get("out_result_set");		
	}
	
	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listar_asesores_cumple_diaria() {		
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_listar_asesores_cumple_diaria",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}
	
	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listar_asesores_cumple_mensual() {		
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_listar_asesores_cumple_mensual",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}	

	@SuppressWarnings("unchecked")
	public List<AlarmaCumple> consultaAlarmaCumpleMensual(String idusuarioasesor) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaCumpleMensual",map);
		return (List<AlarmaCumple>)map.get("OUT_CURSOR");
	}
	
	@SuppressWarnings("unchecked")
	public List<AlarmaCumple> consultaAlarmaCumpleDiaria(String idusuarioasesor) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaCumpleDiaria",map);
		return (List<AlarmaCumple>)map.get("OUT_CURSOR");		
	}
	
	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listar_alarmaDesviacionPerfilAsesores() {		
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaDesviacionPerfilAsesores",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}	
	
	@SuppressWarnings("unchecked")
	public List<AlarmaDesviacionPerfil> consultaAlarmaDesviacionPerfil(String idusuarioasesor) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaDesviacionPerfil",map);
		return (List<AlarmaDesviacionPerfil>)map.get("OUT_CURSOR");		
	}
	
	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listar_asesores_bono_diaria() {		
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_listar_asesores_bono_diaria",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}
	
	@SuppressWarnings("unchecked")
	public List<AlarmaBono> consultaAlarmaBonoDiaria(String idusuarioasesor) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaBonoDiaria",map);
		return (List<AlarmaBono>)map.get("out_result_set");
	}
	

	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listar_asesores_orep_diaria() {		
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_listar_asesores_orep_diaria",map);
		return (List<UsuarioAsesor>)map.get("out_result_set");		
	}
	
	@SuppressWarnings("unchecked")
	public List<AlarmaORep> consultaAlarmaORepDiaria(String idusuarioasesor) {		
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idusuarioasesor);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaORepDiaria",map);
		return (List<AlarmaORep>)map.get("out_result_set");
	}
	
	@SuppressWarnings("unchecked")
	public void spAlarmapClienteValidacion() throws Exception{
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaClienteValidacion");
	}
	
	@SuppressWarnings("unchecked")
	public void spAlarmaClienteEnvioInfo(String in_codigo) throws Exception{		
		HashMap map = new HashMap();
		map.put("in_codigo", in_codigo);
		getSqlMapClientTemplate().queryForList("BP_ALARMAS.sp_alarmaClienteEnvioInfo",map);
	}
}
